package br.unipar.blog.persistence.manager.artigo.impl;

import br.unipar.blog.persistence.entity.Artigo;
import br.unipar.blog.persistence.manager.artigo.ArtigoManager;
import static com.google.code.liquidform.LiquidForm.*;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.util.Assert;

public class JpaArtigoManagerImpl implements ArtigoManager {

    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public Artigo salvar(Artigo artigo) {
        Assert.notNull(artigo);
        Assert.hasText(artigo.getAssunto());
        Assert.hasText(artigo.getTexto());
        Assert.notNull(artigo.getUsuario());

        artigo.setDataCadastro(new Date());

        if (artigo.getId() == null) {
            entityManager.persist(artigo);
        } else {
            entityManager.merge(artigo);
        }

        return artigo;
    }

    @Override
    public List<Artigo> listar() {
        Artigo a = alias(Artigo.class, "a");
        String qlQuery = select(a).from(Artigo.class).as(a).toString();
        return entityManager.createQuery(qlQuery).getResultList();
    }

}
